package com.wk.code.wkserver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wk.code.wkserver.entity.User;
import com.wk.code.wkserver.request.admin.TechUserVerifyRequest;
import com.wk.code.wkserver.request.app.UserRequest;
import com.wk.code.wkserver.request.app.WxLoginRequest;
import com.wk.code.wkserver.response.admin.UserInfoDetailResponse;
import com.wk.code.wkserver.response.app.AppUserInfoResponse;
import com.wk.code.wkserver.response.base.PageInfo;

import javax.servlet.http.HttpServletRequest;

/**
 * User 接口
 *
 * @Author wq
 * @Date 2021-03-16
 **/
public interface IUserService extends IService<User> {

    /**
     * 分页
     *
     * @param request 请求参数
     * @return PageInfo<User>
     */
    PageInfo<User> page(UserRequest request);


    /**
     * 用户基本信息
     *
     * @param userId 用户ID
     * @return UserInfoDetailResponse
     */
    UserInfoDetailResponse detail(Integer userId);


    /**
     * 退出登录
     *
     * @param request 请求参数
     */
    void logout(HttpServletRequest request);


    /**
     * 查询用户
     *
     * @param userId userId
     * @return User
     */
    User selectById(Integer userId);

    /**
     * 微信登录手机号
     *
     * @param request 请求参数
     * @return String
     */
    String loginCode(WxLoginRequest request);


    /**
     * 技术申请后台审核
     *
     * @param request 请求参数
     */
    void applyVerifyTech(Integer sysUserId, TechUserVerifyRequest request);

    /**
     * 获取用户信息
     *
     * @param userId 用户ID
     * @return AppUserInfoResponse
     */
    AppUserInfoResponse userInfo(Integer userId);

    /**
     * 微信手机号登录
     *
     * @param request 请求参数
     * @return R
     */
    AppUserInfoResponse loginMobile(WxLoginRequest request) throws Exception;

    /**
     * 修改用户状态
     *
     * @param userId 用户ID
     */
    void updateUserStatus(Integer userId);
}
